unit Con_PedidosFaturamento;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Formulario_Padrao_Consulta, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,
  Mask, ToolEdit, Db, DBClient, dbtables, TFlatButtonUnit;

type
  TFrmCon_PedidoFaturamento = class(TFrmConsulta)
    Label1: TLabel;
    EdtData_inicial: TDateEdit;
    DbgPed: TDBGrid;
    CdsPedidos: TClientDataSet;
    CdsPedidosped_dataped: TDateField;
    CdsPedidosped_Situacao: TStringField;
    CdsPedidosped_obs: TStringField;
    CdsPedidosped_pedclie: TStringField;
    CdsPedidosbkp_pedido: TStringField;
    DsPedido: TDataSource;
    CdsPedidosSituacao: TStringField;
    CdsPedidosPED_VALOR: TFloatField;
    procedure BtnFecharClick(Sender: TObject);
    procedure EdtData_inicialKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure FazConsulta;
  public
    Con_Ped_numero: string;
    { Public declarations }
  end;

var
  FrmCon_PedidoFaturamento: TFrmCon_PedidoFaturamento;
  Con_Ped_entidade: string;
  Con_Ped_empresa: string;

implementation

uses Dm, Biblio, clsPedidosVenda, clsBackup_Pedido;

var
  backup_pedido: TBackupPedido;

{$R *.DFM}

  { TFrmCon_PedidoFaturamento }

procedure TFrmCon_PedidoFaturamento.FazConsulta;
var
  situacao: string;
  tq: TQuery;
begin
  tq := tquery.create(dmint);
  tq.databasename := DmInt.Db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.Params.Clear;
  tq.sql.add('Select B.Bkp_Pedido,B.Ent_codigo,' +
    'p.Ped_dataped,p.ped_pedclie,p.ped_pedrepre,' +
    'p.ped_obs,p.Ped_Situacao, sum(ped_valor) as ped_Valor from Backup_Pedido b,PedidosVenda p where ' +
    '((p.Ped_dataped>=:k_P_data) and ped_situacao in (:K_S1,:K_S2,:K_S3,:K_S4) and ' +
    '(b.ped_numero=p.ped_numero and b.Ent_Codigo=:k_P_ent)) ');
  if Con_Ped_empresa <> '' then
    tq.SQL.Add(' and (p.Emp_codigo = ' + QuotedStr(Con_Ped_empresa) + ')');
  tq.SQL.Add('group by b.Bkp_Pedido,b.Ent_codigo,p.Ped_dataped,' +
    'p.ped_pedclie,p.ped_pedrepre,p.ped_obs,p.Ped_Situacao');
  tq.parambyname('k_P_data').AsDateTime := EdtData_inicial.Date;
  tq.parambyname('k_P_ent').Asstring := strzero(Con_Ped_entidade, 5);
  tq.parambyname('k_S1').Asstring := 'A';
  tq.parambyname('k_S2').Asstring := 'P';
  tq.parambyname('k_S3').Asstring := 'X';
  tq.parambyname('k_S4').Asstring := 'J';
  tq.open;
  CdsPedidos.close;
  CdsPedidos.CreateDataSet;
  CdsPedidos.Open;
  while not tq.eof do begin
    //carraga primeiro os pedidos em aberto
    situacao := tq.fieldbyname('ped_situacao').asstring;
    if (situacao = 'P') or (situacao = 'A') then begin
      CdsPedidos.Append;
      CdsPedidos.fieldbyname('bkp_pedido').AsString := tq.fieldbyname('bkp_pedido').AsString;
      CdsPedidos.fieldbyname('ped_situacao').AsString := tq.fieldbyname('ped_situacao').AsString;
      CdsPedidos.fieldbyname('ped_pedclie').AsString := tq.fieldbyname('ped_pedclie').AsString;
      CdsPedidos.fieldbyname('ped_obs').AsString := tq.fieldbyname('ped_obs').AsString;
      CdsPedidos.fieldbyname('ped_dataped').AsDateTime := tq.fieldbyname('ped_dataped').AsDateTime;
      CdsPedidos.fieldbyname('situacao').AsString := 'Aberto';
      CdsPedidos.FieldByName('ped_valor').AsFloat := tq.fieldbyname('ped_valor').AsFloat;
      CdsPedidos.Post;
    end;
    tq.next;
  end;
  tq.first;
  while not tq.eof do begin
    //carrega pedidos faturados parcialmente
    situacao := tq.fieldbyname('ped_situacao').asstring;
    if (situacao = 'X') or (situacao = 'J') then begin
      CdsPedidos.Append;
      CdsPedidos.fieldbyname('bkp_pedido').AsString := tq.fieldbyname('bkp_pedido').AsString;
      CdsPedidos.fieldbyname('ped_situacao').AsString := tq.fieldbyname('ped_situacao').AsString;
      CdsPedidos.fieldbyname('ped_pedclie').AsString := tq.fieldbyname('ped_pedclie').AsString;
      CdsPedidos.fieldbyname('ped_obs').AsString := tq.fieldbyname('ped_obs').AsString;
      CdsPedidos.fieldbyname('ped_dataped').AsDateTime := tq.fieldbyname('ped_dataped').AsDateTime;
      CdsPedidos.fieldbyname('situacao').AsString := 'Fat. Parcial';
      CdsPedidos.FieldByName('ped_valor').AsFloat := tq.fieldbyname('ped_valor').AsFloat;
      CdsPedidos.Post;
    end;
    tq.next;
  end;
  CdsPedidos.first;
  tq.close;
  tq.free;
end;

procedure TFrmCon_PedidoFaturamento.BtnFecharClick(Sender: TObject);
begin
  inherited;
  Con_Ped_numero := CdsPedidos.fieldbyname('bkp_Pedido').asstring;
end;

procedure TFrmCon_PedidoFaturamento.EdtData_inicialKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = 12 then begin
    FazConsulta;
    EdtData_inicial.setfocus;
  end;
end;

procedure TFrmCon_PedidoFaturamento.FormActivate(Sender: TObject);
begin
  inherited;
  fazconsulta;
  EdtData_inicial.setfocus;
end;

procedure TFrmCon_PedidoFaturamento.FormCreate(Sender: TObject);
begin
  inherited;
  backup_pedido := TBackupPedido.create;
end;

procedure TFrmCon_PedidoFaturamento.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  backup_pedido.free;
end;

end.

